/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package logica;

import java.io.*;
import java.util.*;
import javax.comm.*;
import javax.swing.JOptionPane;

/**
 *
 * @author Administrador
 */
public class HiloRecibeDato extends Thread implements SerialPortEventListener {

    CommPortIdentifier idPuerto;
    InputStream entrada;
    SerialPort puertoSerie;
    ProcesaCadena pc;
  
    HiloRecibeDato(CommPortIdentifier x, ProcesaCadena pc) {
        this.idPuerto = x;
        this.pc = pc;
        configuracionPuerto();
    }

    public void configuracionPuerto() {
        
        try {
            puertoSerie = (SerialPort) idPuerto.open("AplLectura", 2000);
        } catch (PortInUseException e) {
        }
        try {
            entrada = puertoSerie.getInputStream();
        } catch (IOException e) {
        }
        // Añadimos un receptor de eventos para estar informados de lo que suceda en el puerto
        try {
            puertoSerie.addEventListener(this);
        } catch (TooManyListenersException e) {
        }
        // Hacemos que se nos notifique cuando haya datos disponibles en el buffer de la puerta
        puertoSerie.notifyOnDataAvailable(true);
        // Se fijan los parámetros de comunicación del puerto
        try {
            puertoSerie.setSerialPortParams(9600,
                    SerialPort.DATABITS_8,
                    SerialPort.STOPBITS_1,
                    SerialPort.PARITY_NONE);
        } catch (UnsupportedCommOperationException e) {
        }
    }

    @Override
    public void run() {
          try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            //JOptionPane.showMessageDialog(null, e, null, );
        }
      
    }

    public void serialEvent(SerialPortEvent ev) {
        System.out.println("Cachando evento del puerto");
        switch (ev.getEventType()) {

            case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
                break;
            case SerialPortEvent.DATA_AVAILABLE:
                System.out.println("ha llegado un dato al puerto");
                try {
                    while (entrada.available() > 0) {
                        char caracter = (char) entrada.read();
//                        System.out.print(caracter);
                        pc.recibeLectura(""+caracter);
                    }
                } catch (IOException e) {
                  System.out.println(e);
                }
                break;
        }
    }
}
